package com.fsh.anime.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.fsh.anime.model.dtos.EmailLoginDto;
import com.fsh.anime.model.dtos.EmailRegistryDto;
import com.fsh.anime.model.dtos.PageUserDto;
import com.fsh.anime.model.dtos.UserMarkingDto;
import com.fsh.anime.model.pojos.User;
import com.fsh.anime.model.vos.Result;

public interface UserService extends IService<User> {

    /**
     * 获取分页用户列表
     *
     * @param dto dto
     * @return {@link Result}
     */
    Result getUsers(PageUserDto dto);

    /**
     * 添加用户
     */
    Result addUser(User user);

    /**
     * 更新用户状态
     *
     * @param id     id
     * @param status 状态
     * @return {@link Result}
     */
    Result updateUserStatus(Integer id, Integer status);

    /**
     * 删除用户
     *
     * @param id id
     * @return {@link Result}
     */
    Result delUser(Integer id);


    /**
     * 得到分数
     *
     * @param id id
     * @return {@link Result}
     */
    Result getScore(Integer id);

    /**
     *  当前登录用户 打分
     *
     * @param dto dto
     * @return {@link Result}
     */
    Result userMarking(UserMarkingDto dto);

    /**
     * 关注作者
     *
     * @param followId  被关注作者的id
     * @param followsUp 关注行为
     * @return {@link Result}
     */
    Result follow(Long followId, Integer followsUp);

    /**
     * 删除 当前用户的文章
     */
    Result delArticle(String id);

    /**
     * //查询该用户是否已经注册过并授权过。（特征为：既有openId，也有昵称和头像）
     */
    User selectByOpenId(String openId);

    /**
     * 微信用户注册
     */
    void register(User u);

    /**
     * 发送邮箱验证码
     */
    Result sendEmailCode(String email);

    /**
     * 邮箱注册
     */
    Result emailRegister(EmailRegistryDto dto);

    /**
     * 邮箱密码登录
     */
    Result emailLogin(EmailLoginDto dto);
}
